Удаление ненужных таблиц с базы данных Joomla 3

В прошлой статье мы начали обсуждать вопрос как очистить и оптимизировать базу данных Joomla 3. Сегодня продолжим эту обширную тему и поговорим о том, как очистить базу данных от ненужных и неиспользуемых таблиц, которые могут остаться после удаления расширений.

Как удалять расширения и очистить сайт от мусора мы говорили в одной из предыдущих статей. Однако мы не трогали базу данных и не проверяли её на наличие таблиц оставшихся после удаления тех самых расширений.

В рамках данной статьи я не буду рассматривать все возможные расширения и их таблицы, для понимания сути будет вполне достаточно пары примеров. И одним из таких наиболее ярких примеров это стандартное расширение Joomla 3 под названием «Умный поиск», которое способно раздуть базу данных просто до невероятных размеров. Как раз о нем и пойдет речь в данной статье, а попутно поговорим о других расширениях, таблицы или упоминания о которых остаются в базе данных даже после их удаления.

Умный поиск и куча таблиц в базе данных

Как уже было сказано есть в стандартном наборе Joomla такое расширение как «Умный поиск», в состав которого входят плагины, модуль и компонент. Суть его заключается в том, что пользователь при поиске необходимой информации набирает несколько букв искомой фразы, а умный поиск предлагает несколько возможных вариантов тем самым сокращает время, потраченное на поиск.

Все бы хорошо, вещь то вроде полезная, но для функционирования данного расширения требуется предварительная индексация сайта, после чего в базу данных заносится огромное количество ключевых слов. В результате такого подхода со временем накапливается просто невероятное количество записей в таблицах базы данных и её размер просто удивляет. Для того чтобы не быть голословным покажу конкретный пример того как может быть раздута база данных Joomla если Вы начнете использовать умный поиск:

Благодаря "Умному поиску" размер базы данных Joomla 3 увеличился до невероятных размеров

Впечатляет, не так ли? Размер таблицы с материалами составляет 1.6 Мб, а размер таблиц умного поиска таков:

Имя таблицы Размер, Мб
jos_finder_terms 22,6
jos_finder_links_terms* (все возможные таблицы) 9
jos_finder_links 1,6
Прочие (jos_finder_taxonomy, jos_finder_taxonomy_map, jos_finder_tokens и т.д.) 1

В результате совершенно все материалы (которых порядка 40 штук) занимают 1.6 мегабайт пространства, а размер проиндексированных данных для умного поиска превышает 34 мегабайта. Получается, что размер базы данных более чем на 95% состоит из ненужных данных, которыми и пользуются то далеко не все.

Использовать или нет «Умный поиск» дело конечно каждого, но если Вы не желаете получить в конечном итоге подобный результат, то советую от него избавиться. Как удалить данное расширение понятно (если не понятно прочитайте данную статью), а как быть с вышеупомянутыми таблицами, которые могут (не всегда, но могут) остаться в базе данных и сами по себе никуда оттуда не денутся это уже вопрос, на который я попытаюсь ответить.

Итак, приступим, для начала удаляем всех представителей расширения «Умный поиск» (плагины, компонент и модуль). Так как база данных у нас в MySQL переходим в phpMyAdmin и находим все связанные с умным поиском таблицы (25 штук), их найти не трудно, у каждой таблицы в имени присутствует слово _ finder. Если кому-то страшно это делать, то для начала экспортируйте их на всякий случай (мало ли чего произойдет).

Хочу обратить внимание, когда будите выделять таблицы для последующего удаления, внимательно смотрите на их имена, вполне возможно, что Вы случайно зацепите таблицы с именем _fields*, которые не имеют никакого отношения к «Умному поиску».

Выделили все таблицы и в самом низу страницы в выпадающем списке «С отмеченными» выбираем «Удалить»:

Таблицы в базе данных Joomla 3, которые относятся к «Умному поиску»

После этого у Вас уточнят – а действительно ли нужно удалить данные таблицы? На этот вопрос надо ответить положительно:

Подтверждаем, что мы действительно хотим удалить таблицы с базы данных Joomla 3

И снова небольшая заметка, не стоит удалять таблицы с базы данных до того как будет удалено само расширение, это может повлечь за собой некоторые проблемы.

Все, на этом мы избавились от «Умного поиска» и от его таблиц в базе данных, но это еще не конец. Дело в том, что в Joomla 3 существует проверка на наличие подобных стандартных таблиц, и если Вы теперь зайдете в панель управления и перейдете в раздел проверки базы данных (Расширения -> Менеджер расширений -> База данных), то увидите следующую картину:

Ошибки в панели управления после удаления таблиц в базе данных Joomla 3

Как я и говорил это результат встроенной проверки на отсутствие стандартных таблиц в базе данных. Ситуация конечно не приятная, но все же не такая уж и страшная. Все что нам потребуется для того чтобы избавиться от подобной неразберихи в панели управления это удалить либо очистить некоторые файлы Joomla.

Ни в коем случае не нажимайте на кнопку «Исправить» иначе все удаленные таблицы будут заново созданы и весь процесс придется повторять заново.

Файла всего четыре (если внимательно посмотреть на скриншот, то можно заметить имена нужных фалов):

  • 3.0.0.sql
  • 2.5.0-2011-12-23.sql
  • 2.5.0-2011-12-21-2.sql
  • 3.7.0-2017-03-19.sql

Найти данные файлы можно по адресу administrator/components/com_admin/sql/updates/mysql. Что с ними делать? Да ничего особенного – удалить или очистить. Какие файлы можно удалять (очищать), а какие только править смотрите в таблице:

Файл Действия
3.0.0.sql Удалить строки, в которых содержится записи finder_
2.5.0-2011-12-23.sql Удалить или очистить
2.5.0-2011-12-21-2.sql Удалить или очистить
3.7.0-2017-03-19.sql Удалить или очистить

Во всех этих файлах, кроме первого речь идет исключительно о таблицах «Умного поиска», следовательно, их можно удалять с сервера полностью или очистить их содержимое. А вот файл 3.0.0.sql проверяет таблицы не только того самого умного поиска, но и другие. Конечно, можно удалить и его, но в этом случае Вы не будите получать сообщения об удаленных таблица других стандартных расширений. Поэтому вычищаем в нем только нужные записи.

Удалять много записей не придется, их относительно мало – 26 штук. Находятся они в строках 49-71 и 110-112 включительно.

После того как файлы были очищены можно снова зайти в панель управления и посмотреть как у нас дела с базой данных, все должно быть замечательно!

Точно таким же образом можно избавиться от проверки других несуществующих таблиц в базе данных Joomla 3, например, после удаления компонента «Баннеры» и прочих. Надо точно так же удалить строки с файла 3.0.0.sql, в которых имеются упоминания о таблицах этих расширений, например _banners для компонента баннеров и так далее. Ничего сложного нет!

Добавить комментарий


Комментарии   

shuher715
0 #1 shuher715 13.02.2019 17:58
61-optimizatsiya-bazy-dannykh-joomla-3-chast-2
Как удалить отсюда айди 61-?
Чтобы урл адрес всех материалов стал например так: http://joom4all.ru/sites-creation/database/optimizatsiya-bazy-dannykh-joomla-3-chast-2
Цитировать
Joom4all
0 #2 Joom4all 13.02.2019 21:01
Тут такое дело, что просто так удалить идентификатор материала для всех статей не получится, по крайней мере без значительных изменений в движке.
Но для отдельных материалов все реально - нужно создать для них отдельные пункты меню.
Цитировать
Сергей
0 #3 Сергей 19.03.2019 06:54
Судя по дате, данная функция уже есть в движке!
Материалы->Настройки->Маршрутизация URL
Поставить экспериментальная и ID исчезнут!
Цитировать
Олег
0 #4 Олег 27.03.2019 13:36
А после обновления joomla начинать удалять все заново?
Цитировать